   This file documents Gnus, the GNU Emacs newsreader.

   Copyright (C) 1995,96 Free Software Foundation, Inc.

   Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.

   Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided also
that the entire resulting derived work is distributed under the terms
of a permission notice identical to this one.

   Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions.

Group Parameters
================

   The group parameters store information local to a particular group:

`to-address'
     If the group parameter list contains an element that looks like
     `(to-address .  "some@where.com")', that address will be used by
     the backend when doing followups and posts.  This is primarily
     useful in mail groups that represent closed mailing lists--mailing
     lists where it's expected that everybody that writes to the
     mailing list is subscribed to it.  Since using this parameter
     ensures that the mail only goes to the mailing list itself, it
     means that members won't receive two copies of your followups.

     Using `to-address' will actually work whether the group is foreign
     or not.  Let's say there's a group on the server that is called
     `fa.4ad-l'.  This is a real newsgroup, but the server has gotten
     the articles from a mail-to-news gateway.  Posting directly to this
     group is therefore impossible--you have to send mail to the mailing
     list address instead.

`to-list'
     If the group parameter list has an element that looks like
     `(to-list . "some@where.com")', that address will be used when
     doing a `a' in that group.  It is totally ignored when doing a
     followup--except that if it is present in a news group, you'll get
     mail group semantics when doing `f'.

     If you do an `a' command in a mail group and you don't have a
     `to-list' group parameter, one will be added automatically upon
     sending the message.

`visible'
     If the group parameter list has the element `(visible . t)', that
     group will always be visible in the Group buffer, regardless of
     whether it has any unread articles.

`broken-reply-to'
     Elements like `(broken-reply-to . t)' signals that `Reply-To'
     headers in this group are to be ignored.  This can be useful if
     you're reading a mailing list group where the listserv has inserted
     `Reply-To' headers that point back to the listserv itself.  This is
     broken behavior.  So there!

`to-group'
     Elements like `(to-group . "some.group.name")' means that all
     posts in that group will be sent to `some.group.name'.

`newsgroup'
     If this symbol is present in the group parameter list, Gnus will
     treat all responses as if they were responses to news articles.
     This can be useful if you have a mail group that's really a mirror
     of a news group.

`gcc-self'
     If this symbol is present in the group parameter list and set to
     `t', newly composed messages will be `Gcc''d to the current group.
     If it is present and set to `none', no `Gcc:' header will be
     generated, if it is present and a string, this string will be
     inserted literally as a `gcc' header (this symbol takes precedence
     over any default `Gcc' rules as described later).

`auto-expire'
     If the group parameter has an element that looks like `(auto-expire
     . t)', all articles read will be marked as expirable.  For an
     alternative approach, see Expiring Mail..

`total-expire'
     If the group parameter has an element that looks like
     `(total-expire . t)', all read articles will be put through the
     expiry process, even if they are not marked as expirable.  Use with
     caution.  Unread, ticked and dormant articles are not eligible for
     expiry.

`expiry-wait'
     If the group parameter has an element that looks like `(expiry-wait
     . 10)', this value will override any `nnmail-expiry-wait' and
     `nnmail-expiry-wait-function' when expiring expirable messages.
     The value can either be a number of days (not necessarily an
     integer) or the symbols `never' or `immediate'.

`score-file'
     Elements that look like `(score-file . "file")' will make `file'
     into the current score file for the group in question.  This means
     that all score commands you issue will end up in that file.

`adapt-file'
     Elements that look like `(adapt-file . "file")' will make `file'
     into the current adaptive score file for the group in question.
     All adaptive score entries will be put into this file.

`admin-address'
     When unsubscribing from a mailing list you should never send the
     unsubscription notice to the mailing list itself.  Instead, you'd
     send messages to the administrative address.  This parameter
     allows you to put the admin address somewhere convenient.

`display'
     Elements that look like `(display . MODE)' say which articles to
     display on entering the group.  Legal values are:

    `all'
          Display all articles, both read and unread.

    `default'
          Display the default visible articles, which normally includes
          unread and ticked articles.

`comment'
     Elements that look like `(comment . "This is a comment")' are
     arbitrary comments on the group.  They are currently ignored by
     Gnus, but provide a place for you to store information on
     particular groups.

`(VARIABLE FORM)'
     You can use the group parameters to set variables local to the
     group you are entering.  If you want to turn threading off in
     `news.answers', you could put `(gnus-show-threads nil)' in the
     group parameters of that group.  `gnus-show-threads' will be made
     into a local variable in the summary buffer you enter, and the
     form `nil' will be `eval'ed there.

     This can also be used as a group-specific hook function, if you'd
     like.  If you want to hear a beep when you enter a group, you
     could put something like `(dummy-variable (ding))' in the
     parameters of that group.  `dummy-variable' will be set to the
     result of the `(ding)' form, but who cares?

   Use the `G p' command to edit group parameters of a group.

   See Topic Parameters..

   Here's an example group parameter list:

     ((to-address . "ding@gnus.org")
      (auto-expiry . t))

Listing Groups
==============

   These commands all list various slices of the groups available.

`l'
`A s'
     List all groups that have unread articles
     (`gnus-group-list-groups').  If the numeric prefix is used, this
     command will list only groups of level ARG and lower.  By default,
     it only lists groups of level five (i. e.,
     `gnus-group-default-list-level') or lower (i.e., just subscribed
     groups).

`L'
`A u'
     List all groups, whether they have unread articles or not
     (`gnus-group-list-all-groups').  If the numeric prefix is used,
     this command will list only groups of level ARG and lower.  By
     default, it lists groups of level seven or lower (i.e., just
     subscribed and unsubscribed groups).

`A l'
     List all unread groups on a specific level
     (`gnus-group-list-level').  If given a prefix, also list the groups
     with no unread articles.

`A k'
     List all killed groups (`gnus-group-list-killed').  If given a
     prefix argument, really list all groups that are available, but
     aren't currently (un)subscribed.  This could entail reading the
     active file from the server.

`A z'
     List all zombie groups (`gnus-group-list-zombies').

`A m'
     List all unread, subscribed groups with names that match a regexp
     (`gnus-group-list-matching').

`A M'
     List groups that match a regexp (`gnus-group-list-all-matching').

`A A'
     List absolutely all groups in the active file(s) of the server(s)
     you are connected to (`gnus-group-list-active').  This might very
     well take quite a while.  It might actually be a better idea to do
     a `A M' to list all matching, and just give `.' as the thing to
     match on.  Also note that this command may list groups that don't
     exist (yet)--these will be listed as if they were killed groups.
     Take the output with some grains of salt.

`A a'
     List all groups that have names that match a regexp
     (`gnus-group-apropos').

`A d'
     List all groups that have names or descriptions that match a regexp
     (`gnus-group-description-apropos').

   Groups that match the `gnus-permanently-visible-groups' regexp will
always be shown, whether they have unread articles or not.  You can also
add the `visible' element to the group parameters in question to get
the same effect.

   Groups that have just ticked articles in it are normally listed in
the group buffer.  If `gnus-list-groups-with-ticked-articles' is `nil',
these groups will be treated just like totally empty groups.  It is `t'
by default.

Sorting Groups
==============

   The `C-c C-s' (`gnus-group-sort-groups') command sorts the group
buffer according to the function(s) given by the
`gnus-group-sort-function' variable.  Available sorting functions
include:

`gnus-group-sort-by-alphabet'
     Sort the group names alphabetically.  This is the default.

`gnus-group-sort-by-real-name'
     Sort the group alphabetically on the real (unprefixed) group names.

`gnus-group-sort-by-level'
     Sort by group level.

`gnus-group-sort-by-score'
     Sort by group score.

`gnus-group-sort-by-rank'
     Sort by group score and then the group level.  The level and the
     score are, when taken together, the group's "rank".

`gnus-group-sort-by-unread'
     Sort by number of unread articles.

`gnus-group-sort-by-method'
     Sort alphabetically on the select method.

   `gnus-group-sort-function' can also be a list of sorting functions.
In that case, the most significant sort key function must be the last
one.

   There are also a number of commands for sorting directly according to
some sorting criteria:

`G S a'
     Sort the group buffer alphabetically by group name
     (`gnus-group-sort-groups-by-alphabet').

`G S u'
     Sort the group buffer by the number of unread articles
     (`gnus-group-sort-groups-by-unread').

`G S l'
     Sort the group buffer by group level
     (`gnus-group-sort-groups-by-level').

`G S v'
     Sort the group buffer by group score
     (`gnus-group-sort-groups-by-score').

`G S r'
     Sort the group buffer by group rank
     (`gnus-group-sort-groups-by-rank').

`G S m'
     Sort the group buffer alphabetically by backend name
     (`gnus-group-sort-groups-by-method').

   When given a prefix, all these commands will sort in reverse order.

   You can also sort a subset of the groups:

`G P a'
     Sort the process/prefixed groups in the group buffer
     alphabetically by group name
     (`gnus-group-sort-selected-groups-by-alphabet').

`G P u'
     Sort the process/prefixed groups in the group buffer by the number
     of unread articles (`gnus-group-sort-selected-groups-by-unread').

`G P l'
     Sort the process/prefixed groups in the group buffer by group level
     (`gnus-group-sort-selected-groups-by-level').

`G P v'
     Sort the process/prefixed groups in the group buffer by group score
     (`gnus-group-sort-selected-groups-by-score').

`G P r'
     Sort the process/prefixed groups in the group buffer by group rank
     (`gnus-group-sort-selected-groups-by-rank').

`G P m'
     Sort the process/prefixed groups in the group buffer
     alphabetically by backend name
     (`gnus-group-sort-selected-groups-by-method').

Group Maintenance
=================

`b'
     Find bogus groups and delete them
     (`gnus-group-check-bogus-groups').

`F'
     Find new groups and process them (`gnus-group-find-new-groups').
     If given a prefix, use the `ask-server' method to query the server
     for new groups.

`C-c C-x'
     Run all expirable articles in the current group through the expiry
     process (if any) (`gnus-group-expire-articles').

`C-c M-C-x'
     Run all articles in all groups through the expiry process
     (`gnus-group-expire-all-groups').

Browse Foreign Server
=====================

`B'
     You will be queried for a select method and a server name.  Gnus
     will then attempt to contact this server and let you browse the
     groups there (`gnus-group-browse-foreign-server').

   A new buffer with a list of available groups will appear.  This
buffer will use the `gnus-browse-mode'.  This buffer looks a bit (well,
a lot) like a normal group buffer.

   Here's a list of keystrokes available in the browse mode:

`n'
     Go to the next group (`gnus-group-next-group').

`p'
     Go to the previous group (`gnus-group-prev-group').

`SPACE'
     Enter the current group and display the first article
     (`gnus-browse-read-group').

`RET'
     Enter the current group (`gnus-browse-select-group').

`u'
     Unsubscribe to the current group, or, as will be the case here,
     subscribe to it (`gnus-browse-unsubscribe-current-group').

`l'
`q'
     Exit browse mode (`gnus-browse-exit').

`?'
     Describe browse mode briefly (well, there's not much to describe,
     is there) (`gnus-browse-describe-briefly').

Exiting Gnus
============

   Yes, Gnus is ex(c)iting.

`z'
     Suspend Gnus (`gnus-group-suspend').  This doesn't really exit
     Gnus, but it kills all buffers except the Group buffer.  I'm not
     sure why this is a gain, but then who am I to judge?

`q'
     Quit Gnus (`gnus-group-exit').

`Q'
     Quit Gnus without saving the `.newsrc' files (`gnus-group-quit').
     The dribble file will be saved, though (see Auto Save.).

   `gnus-suspend-gnus-hook' is called when you suspend Gnus and
`gnus-exit-gnus-hook' is called when you quit Gnus, while
`gnus-after-exiting-gnus-hook' is called as the final item when exiting
Gnus.

   If you wish to completely unload Gnus and all its adherents, you can
use the `gnus-unload' command.  This command is also very handy when
trying to customize meta-variables.

   Note:

     Miss Lisa Cannifax, while sitting in English class, felt her feet
     go numbly heavy and herself fall into a hazy trance as the boy
     sitting behind her drew repeated lines with his pencil across the
     back of her plastic chair.

Group Topics
============

   If you read lots and lots of groups, it might be convenient to group
them hierarchically according to topics.  You put your Emacs groups over
here, your sex groups over there, and the rest (what, two groups or so?)
you put in some misc section that you never bother with anyway.  You can
even group the Emacs sex groups as a sub-topic to either the Emacs
groups or the sex groups--or both!  Go wild!

   Here's an example:

     Gnus
       Emacs -- I wuw it!
          3: comp.emacs
          2: alt.religion.emacs
         Naughty Emacs
          452: alt.sex.emacs
            0: comp.talk.emacs.recovery
       Misc
          8: comp.binaries.fractals
         13: comp.sources.unix

   To get this *fab* functionality you simply turn on (ooh!) the
`gnus-topic' minor mode--type `t' in the group buffer.  (This is a
toggling command.)

   Go ahead, just try it.  I'll still be here when you get back.  La de
dum...  Nice tune, that...  la la la...  What, you're back? Yes, and now
press `l'.  There.  All your groups are now listed under `misc'.
Doesn't that make you feel all warm and fuzzy?  Hot and bothered?

   If you want this permanently enabled, you should add that minor mode
to the hook for the group mode:

     (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)

Topic Variables
---------------

   Now, if you select a topic, it will fold/unfold that topic, which is
really neat, I think.

   The topic lines themselves are created according to the
`gnus-topic-line-format' variable (see Formatting Variables.).
Legal elements are:

`i'
     Indentation.

`n'
     Topic name.

`v'
     Visibility.

`l'
     Level.

`g'
     Number of groups in the topic.

`a'
     Number of unread articles in the topic.

`A'
     Number of unread articles in the topic and all its subtopics.

   Each sub-topic (and the groups in the sub-topics) will be indented
with `gnus-topic-indent-level' times the topic level number of spaces.
The default is 2.

   `gnus-topic-mode-hook' is called in topic minor mode buffers.

   The `gnus-topic-display-empty-topics' says whether to display even
topics that have no unread articles in them.  The default is `t'.

Topic Commands
--------------

   When the topic minor mode is turned on, a new `T' submap will be
available.  In addition, a few of the standard keys change their
definitions slightly.

`T n'
     Prompt for a new topic name and create it
     (`gnus-topic-create-topic').

`T m'
     Move the current group to some other topic
     (`gnus-topic-move-group').  This command uses the process/prefix
     convention (see Process/Prefix.).

`T c'
     Copy the current group to some other topic
     (`gnus-topic-copy-group').  This command uses the process/prefix
     convention (see Process/Prefix.).

`T D'
     Remove a group from the current topic (`gnus-topic-remove-group').
     This command uses the process/prefix convention (see
     Process/Prefix.).

`T M'
     Move all groups that match some regular expression to a topic
     (`gnus-topic-move-matching').

`T C'
     Copy all groups that match some regular expression to a topic
     (`gnus-topic-copy-matching').

`T h'
     Toggle hiding empty topics
     (`gnus-topic-toggle-display-empty-topics').

`T #'
     Mark all groups in the current topic with the process mark
     (`gnus-topic-mark-topic').

`T M-#'
     Remove the process mark from all groups in the current topic
     (`gnus-topic-unmark-topic').

`RET'
`SPACE'
     Either select a group or fold a topic (`gnus-topic-select-group').
     When you perform this command on a group, you'll enter the group,
     as usual.  When done on a topic line, the topic will be folded (if
     it was visible) or unfolded (if it was folded already).  So it's
     basically a toggling command on topics.  In addition, if you give
     a numerical prefix, group on that level (and lower) will be
     displayed.

`T TAB'
     "Indent" the current topic so that it becomes a sub-topic of the
     previous topic (`gnus-topic-indent').  If given a prefix,
     "un-indent" the topic instead.

`C-k'
     Kill a group or topic (`gnus-topic-kill-group').  All groups in the
     topic will be removed along with the topic.

`C-y'
     Yank the previously killed group or topic
     (`gnus-topic-yank-group').  Note that all topics will be yanked
     before all groups.

`T r'
     Rename a topic (`gnus-topic-rename').

`T DEL'
     Delete an empty topic (`gnus-topic-delete').

`A T'
     List all groups that Gnus knows about in a topics-ified way
     (`gnus-topic-list-active').

`G p'
     Edit the topic parameters (`gnus-topic-edit-parameters').  See
     Topic Parameters.

Topic Sorting
-------------

   You can sort the groups in each topic individually with the following
commands:

`T S a'
     Sort the current topic alphabetically by group name
     (`gnus-topic-sort-groups-by-alphabet').

`T S u'
     Sort the current topic by the number of unread articles
     (`gnus-topic-sort-groups-by-unread').

`T S l'
     Sort the current topic by group level
     (`gnus-topic-sort-groups-by-level').

`T S v'
     Sort the current topic by group score
     (`gnus-topic-sort-groups-by-score').

`T S r'
     Sort the current topic by group rank
     (`gnus-topic-sort-groups-by-rank').

`T S m'
     Sort the current topic alphabetically by backend name
     (`gnus-topic-sort-groups-by-method').

   See Sorting Groups for more information about group sorting.

Topic Topology
--------------

   So, let's have a look at an example group buffer:

     Gnus
       Emacs -- I wuw it!
          3: comp.emacs
          2: alt.religion.emacs
         Naughty Emacs
          452: alt.sex.emacs
            0: comp.talk.emacs.recovery
       Misc
          8: comp.binaries.fractals
         13: comp.sources.unix

   So, here we have one top-level topic (`Gnus'), two topics under
that, and one sub-topic under one of the sub-topics.  (There is always
just one (1) top-level topic).  This topology can be expressed as
follows:

     (("Gnus" visible)
      (("Emacs -- I wuw it!" visible)
       (("Naughty Emacs" visible)))
      (("Misc" visible)))

   This is in fact how the variable `gnus-topic-topology' would look
for the display above.  That variable is saved in the `.newsrc.eld'
file, and shouldn't be messed with manually--unless you really want to.
Since this variable is read from the `.newsrc.eld' file, setting it in
any other startup files will have no effect.

   This topology shows what topics are sub-topics of what topics
(right), and which topics are visible.  Two settings are currently
allowed--`visible' and `invisible'.

Topic Parameters
----------------

   All groups in a topic will inherit group parameters from the parent
(and ancestor) topic parameters.  All legal group parameters are legal
topic parameters (see Group Parameters.).

   Group parameters (of course) override topic parameters, and topic
parameters in sub-topics override topic parameters in super-topics.  You
know.  Normal inheritance rules.  ("Rules" is here a noun, not a verb,
although you may feel free to disagree with me here.)

     Gnus
       Emacs
          3: comp.emacs
          2: alt.religion.emacs
        452: alt.sex.emacs
         Relief
          452: alt.sex.emacs
            0: comp.talk.emacs.recovery
       Misc
          8: comp.binaries.fractals
         13: comp.sources.unix
        452: alt.sex.emacs

   The `Emacs' topic has the topic parameter `(score-file .
"emacs.SCORE")'; the `Relief' topic has the topic parameter
`(score-file . "relief.SCORE")'; and the `Misc' topic has the topic
parameter `(score-file . "emacs.SCORE")'.  In addition,
`alt.religion.emacs' has the group parameter `(score-file .
"religion.SCORE")'.

   Now, when you enter `alt.sex.emacs' in the `Relief' topic, you will
get the `relief.SCORE' home score file.  If you enter the same group in
the `Emacs' topic, you'll get the `emacs.SCORE' home score file.  If
you enter the group `alt.religion.emacs', you'll get the
`religion.SCORE' home score file.

   This seems rather simple and self-evident, doesn't it?  Well, yes.
But there are some problems, especially with the `total-expiry'
parameter.  Say you have a mail group in two topics; one with
`total-expiry' and one without.  What happens when you do `M-x
gnus-expire-all-expirable-groups'?  Gnus has no way of telling which one
of these topics you mean to expire articles from, so anything may
happen.  In fact, I hereby declare that it is "undefined" what happens.
You just have to be careful if you do stuff like that.

Misc Group Stuff
================

`^'
     Enter the server buffer (`gnus-group-enter-server-mode').  See
     The Server Buffer.

`a'
     Post an article to a group (`gnus-group-post-news').  The current
     group name will be used as the default.

`m'
     Mail a message somewhere (`gnus-group-mail').

   Variables for the group buffer:

`gnus-group-mode-hook'
     is called after the group buffer has been created.

`gnus-group-prepare-hook'
     is called after the group buffer is generated.  It may be used to
     modify the buffer in some strange, unnatural way.

`gnus-permanently-visible-groups'
     Groups matching this regexp will always be listed in the group
     buffer, whether they are empty or not.

Scanning New Messages
---------------------

`g'
     Check the server(s) for new articles.  If the numerical prefix is
     used, this command will check only groups of level ARG and lower
     (`gnus-group-get-new-news').  If given a non-numerical prefix, this
     command will force a total re-reading of the active file(s) from
     the backend(s).

`M-g'
     Check whether new articles have arrived in the current group
     (`gnus-group-get-new-news-this-group').
     `gnus-goto-next-group-when-activating' says whether this command is
     to move point to the next group or not.  It is `t' by default.

`C-c M-g'
     Activate absolutely all groups (`gnus-activate-all-groups').

`R'
     Restart Gnus (`gnus-group-restart').  This saves the `.newsrc'
     file(s), closes the connection to all servers, clears up all
     run-time Gnus variables, and then starts Gnus all over again.

   `gnus-get-new-news-hook' is run just before checking for new news.

   `gnus-after-getting-new-news-hook' is run after checking for new
news.

Group Information
-----------------

`H f'
     Try to fetch the FAQ for the current group
     (`gnus-group-fetch-faq').  Gnus will try to get the FAQ from
     `gnus-group-faq-directory', which is usually a directory on a
     remote machine.  This variable can also be a list of directories.
     In that case, giving a prefix to this command will allow you to
     choose between the various sites.  `ange-ftp' (or `efs') will be
     used for fetching the file.

     If fetching from the first site is unsuccessful, Gnus will attempt
     to go through `gnus-group-faq-directory' and try to open them one
     by one.

`H d'
`C-c C-d'
     Describe the current group (`gnus-group-describe-group').  If given
     a prefix, force Gnus to re-read the description from the server.

`M-d'
     Describe all groups (`gnus-group-describe-all-groups').  If given a
     prefix, force Gnus to re-read the description file from the server.

`H v'
`V'
     Display current Gnus version numbers (`gnus-version').

`?'
     Give a very short help message (`gnus-group-describe-briefly').

`C-c C-i'
     Go to the Gnus info node (`gnus-info-find-node').

Group Timestamp
---------------

   It can be convenient to let Gnus keep track of when you last read a
group.  To set the ball rolling, you should add
`gnus-group-set-timestamp' to `gnus-select-group-hook':

     (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)

   After doing this, each time you enter a group, it'll be recorded.

   This information can be displayed in various ways--the easiest is to
use the `%d' spec in the group line format:

     (setq gnus-group-line-format
           "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n")

   This will result in lines looking like:

     *        0: mail.ding                                19961002T012943
              0: custom                                   19961002T012713

   As you can see, the date is displayed in compact ISO 8601 format.
This may be a bit too much, so to just display the date, you could say
something like:

     (setq gnus-group-line-format
           "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n")

File Commands
-------------

`r'
     Re-read the init file (`gnus-init-file', which defaults to
     `~/.gnus') (`gnus-group-read-init-file').

`s'
     Save the `.newsrc.eld' file (and `.newsrc' if wanted)
     (`gnus-group-save-newsrc').  If given a prefix, force saving the
     file(s) whether Gnus thinks it is necessary or not.

The Summary Buffer
******************

   A line for each article is displayed in the summary buffer.  You can
move around, read articles, post articles and reply to articles.

   The most common way to a summary buffer is to select a group from the
group buffer (see Selecting a Group.).

   You can have as many summary buffers open as you wish.

Summary Buffer Format
=====================

   Gnus will use the value of the `gnus-extract-address-components'
variable as a function for getting the name and address parts of a
`From' header.  Two pre-defined functions exist:
`gnus-extract-address-components', which is the default, quite fast,
and too simplistic solution; and `mail-extract-address-components',
which works very nicely, but is slower.  The default function will
return the wrong answer in 5% of the cases.  If this is unacceptable to
you, use the other function instead.

   `gnus-summary-same-subject' is a string indicating that the current
article has the same subject as the previous.  This string will be used
with those specs that require it.  The default is `'.

Summary Buffer Lines
--------------------

   You can change the format of the lines in the summary buffer by
changing the `gnus-summary-line-format' variable.  It works along the
same lines as a normal `format' string, with some extensions (see
Formatting Variables.).

   The default string is `%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n'.

   The following format specification characters are understood:

`N'
     Article number.

`S'
     Subject string.

`s'
     Subject if the article is the root or the previous article had a
     different subject, `gnus-summary-same-subject' otherwise.
     (`gnus-summary-same-subject' defaults to `'.)

`F'
     Full `From' header.

`n'
     The name (from the `From' header).

`a'
     The name (from the `From' header).  This differs from the `n' spec
     in that it uses the function designated by the
     `gnus-extract-address-components' variable, which is slower, but
     may be more thorough.

`A'
     The address (from the `From' header).  This works the same way as
     the `a' spec.

`L'
     Number of lines in the article.

`c'
     Number of characters in the article.

`I'
     Indentation based on thread level (see Customizing Threading.).

`T'
     Nothing if the article is a root and lots of spaces if it isn't (it
     pushes everything after it off the screen).

`['
     Opening bracket, which is normally `[', but can also be `<' for
     adopted articles (see Customizing Threading.).

`]'
     Closing bracket, which is normally `]', but can also be `>' for
     adopted articles.

`>'
     One space for each thread level.

`<'
     Twenty minus thread level spaces.

`U'
     Unread.

`R'
     Replied.

`i'
     Score as a number.

`z'
     Zcore, `+' if above the default level and `-' if below the default
     level.  If the difference between `gnus-summary-default-level' and
     the score is less than `gnus-summary-zcore-fuzz', this spec will
     not be used.

`V'
     Total thread score.

`x'
     `Xref'.

`D'
     `Date'.

`d'
     The `Date' in `DD-MMM' format.

`o'
     The `Date' in YYYYMMDD`T'HHMMSS format.

`M'
     `Message-ID'.

`r'
     `References'.

`t'
     Number of articles in the current sub-thread.  Using this spec
     will slow down summary buffer generation somewhat.

`e'
     An `=' (`gnus-not-empty-thread-mark') will be displayed if the
     article has any children.

`P'
     The line number.

`u'
     User defined specifier.  The next character in the format string
     should be a letter.  Gnus will call the function
     `gnus-user-format-function-'`X', where `X' is the letter following
     `%u'.  The function will be passed the current header as argument.
     The function should return a string, which will be inserted into
     the summary just like information from any other summary specifier.

   The `%U' (status), `%R' (replied) and `%z' (zcore) specs have to be
handled with care.  For reasons of efficiency, Gnus will compute what
column these characters will end up in, and "hard-code" that.  This
means that it is illegal to have these specs after a variable-length
spec.  Well, you might not be arrested, but your summary buffer will
look strange, which is bad enough.

   The smart choice is to have these specs as far to the left as
possible.  (Isn't that the case with everything, though?  But I
digress.)

   This restriction may disappear in later versions of Gnus.

Summary Buffer Mode Line
------------------------

   You can also change the format of the summary mode bar.  Set
`gnus-summary-mode-line-format' to whatever you like.  The default is
`Gnus: %%b [%A] %Z'.

   Here are the elements you can play with:

`G'
     Group name.

`p'
     Unprefixed group name.

`A'
     Current article number.

`V'
     Gnus version.

`U'
     Number of unread articles in this group.

`e'
     Number of unselected articles in this group.

`Z'
     A string with the number of unread and unselected articles
     represented either as `<%U(+%e) more>' if there are both unread
     and unselected articles, and just as `<%U more>' if there are just
     unread articles and no unselected ones.

`g'
     Shortish group name.  For instance, `rec.arts.anime' will be
     shortened to `r.a.anime'.

`S'
     Subject of the current article.

`u'
     User-defined spec.

`s'
     Name of the current score file.

`d'
     Number of dormant articles.

`t'
     Number of ticked articles.

`r'
     Number of articles that have been marked as read in this session.

`E'
     Number of articles expunged by the score files.

Summary Highlighting
--------------------

`gnus-visual-mark-article-hook'
     This hook is run after selecting an article.  It is meant to be
     used for highlighting the article in some way.  It is not run if
     `gnus-visual' is `nil'.

`gnus-summary-update-hook'
     This hook is called when a summary line is changed.  It is not run
     if `gnus-visual' is `nil'.

`gnus-summary-selected-face'
     This is the face (or "font" as some people call it) used to
     highlight the current article in the summary buffer.

`gnus-summary-highlight'
     Summary lines are highlighted according to this variable, which is
     a list where the elements are of the format (FORM . FACE).  If you
     would, for instance, like ticked articles to be italic and
     high-scored articles to be bold, you could set this variable to
     something like
          (((eq mark gnus-ticked-mark) . italic)
           ((> score default) . bold))
     As you may have guessed, if FORM returns a non-`nil' value, FACE
     will be applied to the line.

Summary Maneuvering
===================

   All the straight movement commands understand the numeric prefix and
behave pretty much as you'd expect.

   None of these commands select articles.

`G M-n'
`M-n'
     Go to the next summary line of an unread article
     (`gnus-summary-next-unread-subject').

`G M-p'
`M-p'
     Go to the previous summary line of an unread article
     (`gnus-summary-prev-unread-subject').

`G j'
`j'
     Ask for an article number and then go to that article
     (`gnus-summary-goto-article').

`G g'
     Ask for an article number and then go to the summary line of that
     article without displaying the article
     (`gnus-summary-goto-subject').

   If Gnus asks you to press a key to confirm going to the next group,
you can use the `C-n' and `C-p' keys to move around the group buffer,
searching for the next group to read without actually returning to the
group buffer.

   Variables related to summary movement:

`gnus-auto-select-next'
     If you issue one of the movement commands (like `n') and there are
     no more unread articles after the current one, Gnus will offer to
     go to the next group.  If this variable is `t' and the next group
     is empty, Gnus will exit summary mode and return to the group
     buffer.  If this variable is neither `t' nor `nil', Gnus will
     select the next group, no matter whether it has any unread
     articles or not.  As a special case, if this variable is
     `quietly', Gnus will select the next group without asking for
     confirmation.  If this variable is `almost-quietly', the same will
     happen only if you are located on the last article in the group.
     Finally, if this variable is `slightly-quietly', the `Z n' command
     will go to the next group without confirmation.  Also Group Levels..

`gnus-auto-select-same'
     If non-`nil', all the movement commands will try to go to the next
     article with the same subject as the current.  ("Same" here might
     mean "roughly equal".  See `gnus-summary-gather-subject-limit' for
     details (see Customizing Threading.).)  This variable is not
     particularly useful if you use a threaded display.

`gnus-summary-check-current'
     If non-`nil', all the "unread" movement commands will not proceed
     to the next (or previous) article if the current article is unread.
     Instead, they will choose the current article.

`gnus-auto-center-summary'
     If non-`nil', Gnus will keep the point in the summary buffer
     centered at all times.  This makes things quite tidy, but if you
     have a slow network connection, or simply do not like this
     un-Emacsism, you can set this variable to `nil' to get the normal
     Emacs scrolling action.  This will also inhibit horizontal
     re-centering of the summary buffer, which might make it more
     inconvenient to read extremely long threads.

Choosing Articles
=================

Choosing Commands
-----------------

   None of the following movement commands understand the numeric
prefix, and they all select and display an article.

`SPACE'
     Select the current article, or, if that one's read already, the
     next unread article (`gnus-summary-next-page').

`G n'
`n'
     Go to next unread article (`gnus-summary-next-unread-article').

`G p'
`p'
     Go to previous unread article (`gnus-summary-prev-unread-article').

`G N'
`N'
     Go to the next article (`gnus-summary-next-article').

`G P'
`P'
     Go to the previous article (`gnus-summary-prev-article').

`G C-n'
     Go to the next article with the same subject
     (`gnus-summary-next-same-subject').

`G C-p'
     Go to the previous article with the same subject
     (`gnus-summary-prev-same-subject').

`G f'
`.'
     Go to the first unread article
     (`gnus-summary-first-unread-article').

`G b'
`,'
     Go to the article with the highest score
     (`gnus-summary-best-unread-article').

`G l'
`l'
     Go to the previous article read (`gnus-summary-goto-last-article').

`G p'
     Pop an article off the summary history and go to this article
     (`gnus-summary-pop-article').  This command differs from the
     command above in that you can pop as many previous articles off the
     history as you like.

Choosing Variables
------------------

   Some variables relevant for moving and selecting articles:

`gnus-auto-extend-newsgroup'
     All the movement commands will try to go to the previous (or next)
     article, even if that article isn't displayed in the Summary
     buffer if this variable is non-`nil'.  Gnus will then fetch the
     article from the server and display it in the article buffer.

`gnus-select-article-hook'
     This hook is called whenever an article is selected.  By default it
     exposes any threads hidden under the selected article.

`gnus-mark-article-hook'
     This hook is called whenever an article is selected.  It is
     intended to be used for marking articles as read.  The default
     value is `gnus-summary-mark-read-and-unread-as-read', and will
     change the mark of almost any article you read to
     `gnus-unread-mark'.  The only articles not affected by this
     function are ticked, dormant, and expirable articles.  If you'd
     instead like to just have unread articles marked as read, you can
     use `gnus-summary-mark-unread-as-read' instead.  It will leave
     marks like `gnus-low-score-mark', `gnus-del-mark' (and so on)
     alone.

Scrolling the Article
=====================

`SPACE'
     Pressing `SPACE' will scroll the current article forward one page,
     or, if you have come to the end of the current article, will
     choose the next article (`gnus-summary-next-page').

`DEL'
     Scroll the current article back one page
     (`gnus-summary-prev-page').

`RET'
     Scroll the current article one line forward
     (`gnus-summary-scroll-up').

`A g'
`g'
     (Re)fetch the current article (`gnus-summary-show-article').  If
     given a prefix, fetch the current article, but don't run any of the
     article treatment functions.  This will give you a "raw" article,
     just the way it came from the server.

`A <'
`<'
     Scroll to the beginning of the article
     (`gnus-summary-beginning-of-article').

`A >'
`>'
     Scroll to the end of the article (`gnus-summary-end-of-article').

`A s'
`s'
     Perform an isearch in the article buffer
     (`gnus-summary-isearch-article').

Reply, Followup and Post
========================

Summary Mail Commands
---------------------

   Commands for composing a mail message:

`S r'
`r'
     Mail a reply to the author of the current article
     (`gnus-summary-reply').

`S R'
`R'
     Mail a reply to the author of the current article and include the
     original message (`gnus-summary-reply-with-original').  This
     command uses the process/prefix convention.

`S w'
     Mail a wide reply to the author of the current article
     (`gnus-summary-wide-reply').  A "wide reply" is a reply that goes
     out to all people listed in the `To', `From' (or `Reply-to') and
     `Cc' headers.

`S W'
     Mail a wide reply to the current article and include the original
     message (`gnus-summary-reply-with-original').  This command uses
     the process/prefix convention.

`S o m'
     Forward the current article to some other person
     (`gnus-summary-mail-forward').  If given a prefix, include the full
     headers of the forwarded article.

`S m'
`m'
     Send a mail to some other person
     (`gnus-summary-mail-other-window').

`S D b'
     If you have sent a mail, but the mail was bounced back to you for
     some reason (wrong address, transient failure), you can use this
     command to resend that bounced mail
     (`gnus-summary-resend-bounced-mail').  You will be popped into a
     mail buffer where you can edit the headers before sending the mail
     off again.  If you give a prefix to this command, and the bounced
     mail is a reply to some other mail, Gnus will try to fetch that
     mail and display it for easy perusal of its headers.  This might
     very well fail, though.

`S D r'
     Not to be confused with the previous command,
     `gnus-summary-resend-message' will prompt you for an address to
     send the current message off to, and then send it to that place.
     The headers of the message won't be altered--but lots of headers
     that say `Resent-To', `Resent-From' and so on will be added.  This
     means that you actually send a mail to someone that has a `To'
     header that (probably) points to yourself.  This will confuse
     people.  So, natcherly you'll only do that if you're really eVIl.

     This command is mainly used if you have several accounts and want
     to ship a mail to a different account of yours.  (If you're both
     `root' and `postmaster' and get a mail for `postmaster' to the
     `root' account, you may want to resend it to `postmaster'.
     Ordnung muß sein!

     This command understands the process/prefix convention (see
     Process/Prefix.).

`S O m'
     Digest the current series and forward the result using mail
     (`gnus-uu-digest-mail-forward').  This command uses the
     process/prefix convention (see Process/Prefix.).

`S M-c'
     Send a complaint about excessive crossposting to the author of the
     current article (`gnus-summary-mail-crosspost-complaint').

     This command is provided as a way to fight back agains the current
     crossposting pandemic that's sweeping Usenet.  It will compose a
     reply using the `gnus-crosspost-complaint' variable as a preamble.
     This command understands the process/prefix convention (see
     Process/Prefix.) and will prompt you before sending each mail.